package tedu.week03.often_class;

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * <pre>
 *  java.util.Date日期类.
 *          Date是一个时间的基类.它里面有一个包含格林时间的日期对象.计算单位是以ms为单位的long值.
 *          构造器:
 *              public Date()               生成是一个日期对象
 *          方法:
 *              public Object clone()                   返回此对象的副本。
 *              public boolean after(Date when)         测试此日期是否在指定日期之后。
 *              public boolean before(Date when)        测试此日期是否在指定日期之前。
 *              public int compareTo(Date anotherDate)  比较两个日期的顺序。
 *              public boolean equals(Object obj)       比较两个日期的相等性。
 *              public long getTime()       返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
 *
 *  java.util.Calendar类.
 *          Calendar类是一个抽象类,所以不能直接实例化.当前类的方法里面有静态方法getInstance()可以获取Calendar类的实例.
 *          方法:
 *              public final void setTime(Date date)    使用给定的 Date 设置此 Calendar 的时间。
 *              public boolean after(Object when)       判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后，返回判断结果。
 *              public boolean before(Object when)      判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前，返回判断结果。
 *
 *              public abstract void add(int field,int amount)
 *                          根据日历的规则，为给定的日历字段添加或减去指定的时间量.
 *              public final void clear()               清空设置的偏差值.
 *              public final void clear(int field)      清空field设置的偏差值.
 *              public int get(int field)               返回给定日历字段的值.
 *              public int getActualMaximum(int field)  获取field字段的最大值.
 *              public int getActualMinimum(int field)  获取field字段的最小值.
 *              public long getTimeInMillis()           返回此 Calendar 的时间值，以毫秒为单位.
 *              public final boolean isSet(int field)   判断field值是否已设定.
 *              public void set(int field,int value)    将给定的日历字段设置为给定值.
 *
 *              public int getFirstDayOfWeek()
 *                          获取一星期的第一天；例如，在美国，这一天是 SUNDAY，而在法国，这一天是 MONDAY。
 *              public static Calendar getInstance(TimeZone zone,Locale aLocale)
 *                          使用指定时区和语言环境获得一个日历。
 *
 * </pre>
 *
 * @author : resty
 * @date : 2019年06月10日    14时
 **/
public class Week03_Date {
    public static void main(String[] args){
        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.CHINA);

//        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MONTH,5);
        calendar.clear();
        System.out.println(calendar.isSet(Calendar.MONTH));
        System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.getActualMinimum(Calendar.MONTH));
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.getFirstDayOfWeek());

//        Date date = new Date();
//        System.out.println(date.getTime());
//        Date date1 = (Date) date.clone();
//        System.out.println(date.equals(date1));
    }
}
